#!/bin/bash


:<<memoName

有的机器可能不能使用 rz/sz 命令，这个时候我们就需要安装 lrzsz 
	yum install lrzsz -y
	
    sudo apt-get -y --no-install-recommends install lrzsz

rz命令（Receive ZMODEM），使用ZMODEM协议，
将本地文件批量上传到远程Linux/Unix服务器，
注意不能上传文件夹。

当我们使用虚拟终端软件，如Xshell、SecureCRT或PuTTY来连接远程服务器后，使用rz命令可以上传本地文件到远程服务器。
输入rz回车后，会出现文件选择对话框，选择需要上传文件，一次可以指定多个文件，
上传到服务器的路径为当前执行rz命令的目录。


此外，可以在虚拟终端软件设置上传时默认加载的本地路径和下载的路径。
如SecureCRT软件 -> Options -> session options -> X/Y/Zmodem 下可以设置上传和下载的目录。

命令格式：
	rz [选项]
		选项说明：
			-+, --append:将文件内容追加到已存在的同名文件
			-a,--ascii:以文本方式传输
			-b, --binary:以二进制方式传输，推荐使用
			--delay-startup N:等待N秒
			-e, --escape:对所有控制字符转义，建议使用
			-E, --rename:已存在同名文件则重命名新上传的文件，以点和数字作为后缀
			-p, --protect:对ZMODEM协议有效，如果目标文件已存在则跳过 -
			-q, --quiet:安静执行，不输出提示信息
			-v, --verbose:输出传输过程中的提示信息
			-y, --overwrite:存在同名文件则替换
			-X, --xmodem:使用XMODEM协议
			--ymodem:使用YMODEM协议
			-Z, --zmodem:使用ZMODEM协议
			--version：显示版本信息
			--h, --help：显示帮助信息

	[root@iZ8vb3i5iaiyukbe9l88igZ user_pv]# rz --help 
	rz version 0.12.20
	Usage: rz [options] [filename.if.xmodem]
	Receive files with ZMODEM/YMODEM/XMODEM protocol
		(X) = option applies to XMODEM only
		(Y) = option applies to YMODEM only
		(Z) = option applies to ZMODEM only
	  -+, --append                append to existing files
	  -a, --ascii                 ASCII transfer (change CR/LF to LF)
	  -b, --binary                binary transfer
	  -B, --bufsize N             buffer N bytes (N==auto: buffer whole file)
	  -c, --with-crc              Use 16 bit CRC (X)
	  -C, --allow-remote-commands allow execution of remote commands (Z)
	  -D, --null                  write all received data to /dev/null
		  --delay-startup N       sleep N seconds before doing anything
	  -e, --escape                Escape control characters (Z)
	  -E, --rename                rename any files already existing
		  --errors N              generate CRC error every N bytes (debugging)
	  -h, --help                  Help, print this usage message
	  -m, --min-bps N             stop transmission if BPS below N
	  -M, --min-bps-time N          for at least N seconds (default: 120)
	  -O, --disable-timeouts      disable timeout code, wait forever for data
		  --o-sync                open output file(s) in synchronous write mode
	  -p, --protect               protect existing files
	  -q, --quiet                 quiet, no progress reports
	  -r, --resume                try to resume interrupted file transfer (Z)
	  -R, --restricted            restricted, more secure mode
	  -s, --stop-at {HH:MM|+N}    stop transmission at HH:MM or in N seconds
	  -S, --timesync              request remote time (twice: set local time)
		  --syslog[=off]          turn syslog on or off, if possible
	  -t, --timeout N             set timeout to N tenths of a second
	  -u, --keep-uppercase        keep upper case filenames
	  -U, --unrestrict            disable restricted mode (if allowed to)
	  -v, --verbose               be verbose, provide debugging information
	  -w, --windowsize N          Window is N bytes (Z)
	  -X  --xmodem                use XMODEM protocol
	  -y, --overwrite             Yes, clobber existing file if any
		  --ymodem                use YMODEM protocol
	  -Z, --zmodem                use ZMODEM protocol

	上传文件
		rz
	上传文件
		rz -y 

sz命令
1sz命令（Send ZMODEM）通过ZMODEM协议，可将多个文件从远程服务器下载到本地。注意不能下载文件夹，如果下载文件夹，请先打包再下载
	格式
		rz [选项] [filelist]
			命令选项基本与rz相同，请参考上文rz的命令选项或者sz的manual，或者运行命令sz -h查看。
	[root@iZ8vb3i5iaiyukbe9l88igZ user_pv]# sz --help 
	sz version 0.12.20
	Usage: sz [options] file ...
	   or: sz [options] -{c|i} COMMAND
	Send file(s) with ZMODEM/YMODEM/XMODEM protocol
		(X) = option applies to XMODEM only
		(Y) = option applies to YMODEM only
		(Z) = option applies to ZMODEM only
	  -+, --append                append to existing destination file (Z)
	  -2, --twostop               use 2 stop bits
	  -4, --try-4k                go up to 4K blocksize
		  --start-4k              start with 4K blocksize (doesn't try 8)
	  -8, --try-8k                go up to 8K blocksize
		  --start-8k              start with 8K blocksize
	  -a, --ascii                 ASCII transfer (change CR/LF to LF)
	  -b, --binary                binary transfer
	  -B, --bufsize N             buffer N bytes (N==auto: buffer whole file)
	  -c, --command COMMAND       execute remote command COMMAND (Z)
	  -C, --command-tries N       try N times to execute a command (Z)
	  -d, --dot-to-slash          change '.' to '/' in pathnames (Y/Z)
		  --delay-startup N       sleep N seconds before doing anything
	  -e, --escape                escape all control characters (Z)
	  -E, --rename                force receiver to rename files it already has
	  -f, --full-path             send full pathname (Y/Z)
	  -i, --immediate-command CMD send remote CMD, return immediately (Z)
	  -h, --help                  print this usage message
	  -k, --1k                    send 1024 byte packets (X)
	  -L, --packetlen N           limit subpacket length to N bytes (Z)
	  -l, --framelen N            limit frame length to N bytes (l>=L) (Z)
	  -m, --min-bps N             stop transmission if BPS below N
	  -M, --min-bps-time N          for at least N seconds (default: 120)
	  -n, --newer                 send file if source newer (Z)
	  -N, --newer-or-longer       send file if source newer or longer (Z)
	  -o, --16-bit-crc            use 16 bit CRC instead of 32 bit CRC (Z)
	  -O, --disable-timeouts      disable timeout code, wait forever
	  -p, --protect               protect existing destination file (Z)
	  -r, --resume                resume interrupted file transfer (Z)
	  -R, --restricted            restricted, more secure mode
	  -q, --quiet                 quiet (no progress reports)
	  -s, --stop-at {HH:MM|+N}    stop transmission at HH:MM or in N seconds
		  --tcp                   build a TCP connection to transmit files
		  --tcp-server            open socket, wait for connection
	  -u, --unlink                unlink file after transmission
	  -U, --unrestrict            turn off restricted mode (if allowed to)
	  -v, --verbose               be verbose, provide debugging information
	  -w, --windowsize N          Window is N bytes (Z)
	  -X, --xmodem                use XMODEM protocol
	  -y, --overwrite             overwrite existing files
	  -Y, --overwrite-or-skip     overwrite existing files, else skip
		  --ymodem                use YMODEM protocol
	  -Z, --zmodem                use ZMODEM protocol
	
	下载多个文件
		sz file1 file2 file3
	下载多个文件
		sz -y file1 file2 file3


1、rz与sz只适合小的文件传输，大文件还是使用Filezilla与xftp等工具进行传输；
2、只能传输单个文件，而不能传输文件夹；
3、不是所有工具都支持rz与sz，必须支持ZModem协议才行，例如putty不能使用rz与sz。

memoName